package com.lcy.chat;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class ChatSender extends Thread {
	
	Socket socket;
	String name;
	String m_tmpString = "";
	 	
	public ChatSender( Socket socket, String name )
	{
		//host, port 형식의 Client Sender 소켓을 생성		
		this.socket = socket;  
		
		//대화명을 저장
		this.name = name;
	}
	public void run()
	{
		try
		{	
			
			
			//InputStream bai = new ByteArrayInputStream(m_tmpString.getBytes());			
			
			//시스템에서 전송할 문자를 입력 받는다.
			BufferedReader reader = new BufferedReader( new InputStreamReader( System.in ) );
			//BufferedReader reader = new BufferedReader( new InputStreamReader( bai ) );
						
			//soket에 설정된 정보로 OutputStream PrintWriter생성(soket : host, port)
			PrintWriter writer = new PrintWriter( new PrintWriter( socket.getOutputStream() ) );
			
			// 제일 먼저 서버로 대화명을 송신합니다.
			writer.println( name );		//writer에 정의 되어있는 OutputStream으로 String값을 전달한다.
			writer.flush();				//Stream을 Flush한다.
			
			//쓰레드가 살아있는동안 입력된 메세지를 서버로 전송한다.
			while( true )
			{	
				//Outputstream에 보낼 메세지를 전송받기위해 대기한다.( 한줄씩 데이타를 읽어옴 )
				String str = null;
				
				//str이 null이 아니라면 메세지를 전송한다.
				while( (str=reader.readLine()) != null ){
										
					if( str.equals( "Bye" ) )
					{
						break;
					}
					writer.println(str);
					writer.flush();					
				}
				
			}
		}
		catch (Exception e)
		{
			System.out.println( e.getMessage() );
		}
		finally
		{
			try
			{
				System.out.println("#SenderSocket Close...");
				socket.close();
			}
			catch ( Exception ignored )
			{	
				
			}
		}
	}
	
	
}
